package com.april.pattern.behavioral.memento;

import org.junit.jupiter.api.Test;

/**
 * @author April
 * @version V1.0.0
 * @date 2019/07/09 11:56
 * @description 备忘录模式的测试
 */
public class MementoTest {
    @Test
    public void mementoTest() {
        ArticleMementoManager articleMementoManager = new ArticleMementoManager();
        Article article = new Article("如影随行的设计模式A", "手记内容A", "手记图片A");

        ArticleMemento articleMemento = article.saveToMemento();

        articleMementoManager.addMemento(articleMemento);
        System.out.println("标题:" + article.getTitle() + " 内容:" + article.getContent() + " 图片:"
                + article.getImages() + " 暂存成功");

        System.out.println("手记完整信息:" + article);


        System.out.println("修改手记start");

        article.setTitle("如影随行的设计模式B");
        article.setContent("手记内容B");
        article.setImages("手记图片B");

        System.out.println("修改手记end");

        System.out.println("手记完整信息:" + article);

        articleMemento = article.saveToMemento();
        articleMementoManager.addMemento(articleMemento);

        article.setTitle("如影随行的设计模式C");
        article.setContent("手记内容C");
        article.setImages("手记图片C");

        System.out.println("暂存回退start");

        System.out.println("回退出栈1次");
        articleMemento = articleMementoManager.getMemento();
        article.undoFromMemento(articleMemento);

        System.out.println("回退出栈2次");
        articleMemento = articleMementoManager.getMemento();
        article.undoFromMemento(articleMemento);


        System.out.println("暂存回退end");
        System.out.println("手记完整信息:" + article);
    }
}
